package com.smart.translator.util;

import android.content.Context;
import android.util.Log;

/**
 * VAD使用示例 - 展示如何在音频处理中使用VAD检测
 */
public class VadUsageExample {
    private static final String TAG = "VadUsageExample";
    
    private Context context;
    private VadManager vadManager;
    
    public VadUsageExample(Context context) {
        this.context = context.getApplicationContext();
        this.vadManager = VadManager.getInstance(context);
        
        // 设置VAD回调
        vadManager.setCallback(new VadManager.VadCallback() {
            @Override
            public void onSpeechStart() {
                Log.d(TAG, "🎤 检测到语音开始");
                // 在这里可以开始录音、开始语音识别等
            }
            
            @Override
            public void onSpeechEnd() {
                Log.d(TAG, "🔇 检测到语音结束");
                // 在这里可以停止录音、结束语音识别等
            }
            
            @Override
            public void onVoiceActivity(boolean isSpeech) {
                Log.d(TAG, "VAD状态: " + (isSpeech ? "语音" : "静音"));
                // 在这里可以实时处理语音活动状态
            }
        });
        
        // 初始化VAD管理器
        vadManager.initialize();
    }
    
    /**
     * 示例：处理音频数据
     */
    public void processAudioData(byte[] audioData) {
        // 使用VAD检测语音
        boolean isSpeech = vadManager.processAudio(audioData);
        
        if (isSpeech) {
            // 检测到语音，进行相应处理
            Log.d(TAG, "检测到语音，继续处理音频数据");
            // 例如：发送到语音识别服务
        } else {
            // 检测到静音，可以跳过处理或进行其他操作
            Log.d(TAG, "检测到静音，跳过音频处理");
        }
    }
    
    /**
     * 示例：处理PCM音频数据
     */
    public void processPcmData(short[] pcmData) {
        // 使用VAD检测语音
        boolean isSpeech = vadManager.processAudio(pcmData);
        
        if (isSpeech) {
            // 检测到语音，进行相应处理
            Log.d(TAG, "检测到语音，继续处理PCM数据");
        } else {
            // 检测到静音
            Log.d(TAG, "检测到静音，跳过PCM处理");
        }
    }
    
    /**
     * 示例：处理float音频数据
     */
    public void processFloatData(float[] floatData) {
        // 使用VAD检测语音
        boolean isSpeech = vadManager.processAudio(floatData);
        
        if (isSpeech) {
            // 检测到语音，进行相应处理
            Log.d(TAG, "检测到语音，继续处理float数据");
        } else {
            // 检测到静音
            Log.d(TAG, "检测到静音，跳过float处理");
        }
    }
    
    /**
     * 示例：切换VAD类型
     */
    public void switchVadType(boolean useSilero) {
        VadDetector.VadType vadType = useSilero ? 
            VadDetector.VadType.SILERO : VadDetector.VadType.WEBRTC;
        
        vadManager.setVadType(vadType);
        Log.d(TAG, "VAD类型已切换为: " + vadType.getDisplayName());
    }
    
    /**
     * 示例：获取VAD状态信息
     */
    public void printVadStatus() {
        String statusInfo = vadManager.getStatusInfo();
        Log.d(TAG, "VAD状态信息:\n" + statusInfo);
    }
    
    /**
     * 示例：在音频录制中使用VAD
     */
    public void startAudioRecordingWithVad() {
        Log.d(TAG, "开始带VAD检测的音频录制");
        
        // 这里可以启动音频录制
        // 在音频录制的回调中使用VAD检测
        
        // 示例代码：
        // AudioRecorder.startRecording(new AudioRecorder.AudioCallback() {
        //     @Override
        //     public void onAudioData(byte[] audioData) {
        //         // 使用VAD检测
        //         boolean isSpeech = vadManager.processAudio(audioData);
        //         
        //         if (isSpeech) {
        //             // 检测到语音，保存或发送音频数据
        //             saveAudioData(audioData);
        //         }
        //     }
        // });
    }
    
    /**
     * 示例：在实时语音识别中使用VAD
     */
    public void startRealtimeSpeechRecognition() {
        Log.d(TAG, "开始实时语音识别");
        
        // 这里可以启动实时语音识别
        // 使用VAD来控制语音识别的开始和结束
        
        // 示例代码：
        // SpeechRecognizer.startRecognition(new SpeechRecognizer.Callback() {
        //     @Override
        //     public void onAudioData(byte[] audioData) {
        //         // 使用VAD检测
        //         boolean isSpeech = vadManager.processAudio(audioData);
        //         
        //         if (isSpeech) {
        //             // 检测到语音，发送到语音识别服务
        //             sendToSpeechRecognition(audioData);
        //         }
        //     }
        // });
    }
    
    /**
     * 释放资源
     */
    public void release() {
        if (vadManager != null) {
            vadManager.release();
        }
    }
} 